// observable：用于创建一个被监测的对象，对象的属性就是应用的状态(state)，这些状态会被转换成响应式数据。
// action：用于修改状态(state)的方法，需要使用 action 函数显式的声明创建。
// computed：根据已有状态(state)生成的新值。计算属性是一个方法，在方法前面必须加上 get 修饰符

import { observable, action } from 'mobx-miniprogram'
import { getStorage } from '../utils/storage'

export const userStore = observable({
  // 定义响应式数据
  token: getStorage('token') || '',
  userInfo: getStorage('userInfo') || {},
  //定义action
  //setToken 用来修改 更新 token
  setToken: action(function (token) {
    //在调用setToken方法时，需要传入token数据进行赋值
    this.token = token
  }),
  //对用户信息进行赋值
  setUserInfo: action(function (userInfo) {
    this.userInfo = userInfo
  })
})
